CPP = g++
OFLAG = -o 
CFLAG = -c

# 源文件列表
SrcFiles = A.cpp CD.cpp E.cpp
# 目标文件列表
ObjFiles = $(patsubst %.cpp,%.o,$(SrcFiles))
# 可执行文件列表
TARGETS = A CD E
# 其他文件
LOG_FILES = $(TARGETS:=.out) $(TARGETS:=.log) $(TARGETS:=.aux)

# 默认目标
all: $(TARGETS)

# 生成可执行文件
$(TARGETS): % : %.o
	$(CPP) $(OFLAG) $@ $<

# 生成目标文件
%.o : %.cpp
	$(CPP) $(CFLAG) $< $(OFLAG) $@

# 运行可执行文件
run:
	./A
	./CD
	./E

# 清理目标文件和生成的文件
clean:
	-@rm -f *.o
	rm -f $(TARGETS) $(LOG_FILES)

# 生成报告
report:
	xelatex report.tex
	xelatex report.tex
	xelatex report.tex